<?php
namespace Admin\Controller;
use Think\Controller;
//用户模块
class GoodsController extends Controller {
    public function index()
    {
        // 默认显示商品详情页
        $goods = D("goods");
        //调用表中的方法
        $list = $goods->goods_add();
        //转换状态的显示
        $arr = ['1'=>'新商品','2'=>'在售','3'=>'已下架'];
        //分配数据到模板中显示
        $this->assign('arr',$arr);
        $this->assign($list);
        $this->display();
    }
    //调用商品添加模板
    public function add()
    {
        //获取商品类别进行遍历
        $goods = D('goods');

        $list =$goods->goods_add(); // 调用商品分类表的Model类方法
        
        $this->assign($list);   //分配商品类别信息到模板中
        $this->display();   //显示添加商品模板遍历商品类别选项
    }
   
    /**
     * [insert 上传商品图片并调用Model类的上传商品信息到数据库]
     * @return [type] [返回上传成功或失败的信息]
     */
   public function insert()
   {
        $goods = D("goods");
        $info = self::uploads();    //调用本类的uploads方法上传图片

        if($info=="error"){
            $this->error("上传图片失败",'',2);
        }

        $list = $goods->goods_insert($info['pic']['savename']);
        if($list!="success"){
            $this->error($list,'',2);   //如果上传图片失败则输出信息
        }else{
            $this->success("添加成功",'',2);    //添加商品信息成功后跳转
        }

   }

   /**
    * [edit 点击商品编辑时跳转到该方法，并查询该条商品信息]
    * @return [type] [description]
    */
   public function edit()
   {
        $goods = D('goods');
        $edit = $goods->goods_eidt();   //获取数据库的信息

        $this->assign($edit);       //分配数据
        $this->display('edit');
   }

   /**
    * [updata 在修改完商品信息后提交的到该方法，并检测是否有图片上传的行为]
    * @return [type] [description]
    */
   public function updata()
   {
        $goods = D('goods');
        if($_FILES['pic']['error']==4){     //判断是否有图片上传
            $updata = $goods->goods_updata();
            if($updata=="success"){
                $this->success('修改成功，正在返回中...',U('admin/goods/index'),2);
            }else{
                $this->error($updata,'',2); 
            }
        }else{

            $info = self::uploads();
            if($info=="error"){
                $this->error('图片上传失败','',2);
            }
            /**
             * [$oldimg 获取图片名并同步更新数据库的图片名]
             * @var [type]
             */
            $oldimg = I('post.oldpicname');
            $oldpic = "./Uploads/".$info['pic']['savepath'].$oldimg;
            $list = $goods->goods_updata($info['pic']['savename']);

            if($list=="success"){
                @unlink($oldpic);
                $this->success('修改成功，正在返回中...',U('admin/goods/index'),2);
            }else{
                $this->error($list,'',2); 
            }
        }
   }

/**
 * [doDel 删除商品信息，并删除旧图片]
 * @return [type] [description]
 */
   public function doDel()
   {
        $goods = D('goods');
        $res = $goods->goods_del();

        if($res=="over"){
            $this->error('删除失败！','',2);
        }else{
            @unlink($res['small']);
            @unlink($res['big']);
            $this->success('删除成功',U('admin/goods/index'),2);
        }
   }


   /**
    * [uploads 上传图片类]
    * @return [type] [返回失败或上传成功后的图片信息]
    */
   public function uploads()
   {
        $upload = new \Think\Upload();  //实例化上传类
        $image = new \Think\Image();    //实例化缩略图类
        
        $upload->maxSize= 3145728 ;     //设置上传图片的大小
        //设置上传图片的类型
        $upload->exts=array('jpg', 'gif', 'png', 'jpeg');   
        $upload->savePath= 'comm/';     //设置上传路径
        //设置上传后图片进行重命名
        /*$picname = time().'_'.mt_rand();
        $picname = substr($picname, 0,21);*/
        $upload->saveName = array('mytime',true);
        // $upload->saveName = time().'_'.mt_rand();   
        $upload->autoSub  = false;  //禁止上传图片后自动生成文件夹存放图片
        $info = $upload->upload();  //执行图片上传

        if(!$info){
            return 'error';
        }
        return $info;
   }
   /**
    * [img 展示图片详情页]
    * @return [type] [分配img表中的数据在模板中进行展现]
    */
   public function img()
   {
        $img = D('goods');
        $gid = I('get.id');

        $res = $img->goods_img();
        $this->assign($res);
        $this->assign('gid',$gid);
        $this->display('img');
   }

   /**
    * [photo 批量上传商品详情页的图片类]
    * @return [type] [description]
    */
   public function photo()
   {
        $info = self::uploads();    //上传图片
        
        if($info=="error"){
            $this->error('上传失败','',2);
        }

        $gid = I('post.gid');       //获取需要展现的商品id
        $img = M("img");            //实例化数据库的model类

        foreach ($info as $key => $value) {
            $datalist[] = array('gid'=>$gid,'picname'=>$value['savename']);
        }                           //拼接数据库的字段

        $res = $img->addAll($datalist);     //插入数据库

        if($res!='error'){
            $this->success('上传成功','',2);    
        }else{
            $this->error('上传失败','',2);
        }
   }

   /**
    * [imgdodel 删除商品多图表的信息]
    * @return [type] [description]
    */
   public function imgdodel()
   {
        $img = M("img");
        $id = I('get.id');

        $map['id'] = ['eq',$id];

        $list = $img->where($map)->find();  //根据id值查找相对应的表格
        $imgpath = "./Uploads/comm/".$list['picname'];//拼接路径

        $res = $img->where($map)->delete(); //删除数据库的信息

        if($res){
            @unlink($imgpath);  //删除相对应的图片
            return $this->success('删除成功','',2);
        }else{
            return $this->error('删除失败！','',2);
        }
   }
}